From: Daniel Pettersson Date: Tue, 23 Apr 2024 16:58:06 +0000 (+0200) Subject: Shut down jsonrpc server more gracefully X-Git-Tag: archive/raspbian/1%30.1+1-3+rpi1^2~14^2~18^2~1766 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3aed4400257a6762de96be37fa95357b5836363c;p=emacs.git Shut down jsonrpc server more gracefully * lisp/jsonrpc.el (jsonrpc-running-p): Avoid unnecessarily killing the server process. Suggested by Aaron Zeng . (Bug#70522) --- diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el index 5037d8c5b2b..111e58cefe2 100644 --- a/lisp/jsonrpc.el +++ b/lisp/jsonrpc.el @@ -591,15 +591,18 @@ connection object, called when the process dies.") (cl-defmethod jsonrpc-shutdown ((conn jsonrpc-process-connection) &optional cleanup) "Wait for JSONRPC connection CONN to shutdown. -With optional CLEANUP, kill any associated buffers." +With optional CLEANUP, kill any associated buffers. +If CONN is not shutdown within an reasonable amount of time, warn +and delete process." (unwind-protect (cl-loop with proc = (jsonrpc--process conn) for i from 0 while (not (process-get proc 'jsonrpc-sentinel-cleanup-started)) unless (zerop i) do (jsonrpc--warn "Sentinel for %s still hasn't run, deleting it!" proc) - do (delete-process proc) + do + ;; Let sentinel have a chance to run (accept-process-output nil 0.1)) (when cleanup (kill-buffer (process-buffer (jsonrpc--process conn)))